{% extends "_layouts/examples.html" %}
{% block title %}MAAS docs / Grid layout{% endblock %}

{% block style %}
<style>
  body { margin: 0; }
</style>
{% endblock %}

{% block content %}
<header id="navigation" class="p-navigation is-dark">
  <div class="p-navigation__row row">
    <div class="p-navigation__banner">
      <div class="p-navigation__logo">
        <a href="#" class="p-navigation__item">
          <svg class="p-navigation__image" xmlns="http://www.w3.org/2000/svg" width="100" height="25.2" viewBox="545.3 412.6 100 25.2">
            <title>MAAS logo</title>
            <path fill="#E95420" d="M557.9 412.6c-7 0-12.6 5.7-12.6 12.6 0 7 5.7 12.6 12.6 12.6 7 0 12.6-5.7 12.6-12.6 0-7-5.6-12.6-12.6-12.6z"></path>
            <g fill="#FFF">
              <path d="M563.8 419.2h-11.9c-.3 0-.5.2-.5.5v.7c0 .3.2.5.5.5h11.9c.3 0 .5-.2.5-.5v-.7c.1-.3-.2-.5-.5-.5zM563.8 422.6h-11.9c-.3 0-.5.2-.5.5v.7c0 .3.2.5.5.5h11.9c.3 0 .5-.2.5-.5v-.7c.1-.3-.2-.5-.5-.5zM563.8 426h-11.9c-.3 0-.5.2-.5.5v.7c0 .3.2.5.5.5h11.9c.3 0 .5-.2.5-.5v-.7c.1-.2-.2-.5-.5-.5zM563.8 429.4h-11.9c-.3 0-.5.2-.5.5v.7c0 .3.2.5.5.5h11.9c.3 0 .5-.2.5-.5v-.6c.1-.3-.2-.6-.5-.6z"></path>
            </g>
            <g fill="#FFF">
              <path d="M587.1 431.3c-.2-.4-.4-1-.7-1.7-.3-.7-.7-1.5-1.1-2.3-.4-.8-.8-1.7-1.2-2.5-.4-.9-.8-1.7-1.2-2.5l-1-2-.6-1.2c-.2 2.1-.4 4.4-.5 6.9-.1 2.5-.2 5.1-.3 7.8h-1.7c.2-3.2.3-6.3.5-9.2s.4-5.8.7-8.4h1.5c.5.9 1.1 1.8 1.6 2.9.6 1.1 1.2 2.3 1.7 3.5.6 1.2 1.1 2.4 1.7 3.5s1 2.2 1.4 3.1c.4-.9.9-2 1.4-3.1.5-1.2 1.1-2.3 1.7-3.5.6-1.2 1.1-2.4 1.7-3.5.6-1.1 1.1-2.1 1.6-2.9h1.5c.3 2.7.5 5.5.7 8.4s.4 6 .5 9.2h-1.8c-.1-2.7-.2-5.3-.3-7.8-.1-2.5-.3-4.8-.5-6.9l-.6 1.2-1 2c-.4.8-.8 1.6-1.2 2.5-.4.9-.8 1.7-1.2 2.5-.4.8-.7 1.6-1.1 2.3-.3.7-.6 1.3-.7 1.7h-1.5zM613.1 433.9c-.3-.9-.6-1.7-.9-2.5-.3-.8-.6-1.6-.8-2.3h-8.6c-.3.8-.6 1.5-.9 2.3-.3.8-.6 1.6-.9 2.5h-1.8c.7-1.8 1.3-3.6 1.9-5.1.6-1.6 1.2-3.1 1.8-4.5.6-1.4 1.1-2.8 1.7-4.1l1.8-3.9h1.5l1.8 3.9c.6 1.3 1.1 2.7 1.7 4.1.6 1.4 1.2 2.9 1.7 4.5.6 1.6 1.2 3.3 1.9 5.1h-1.9zm-6-15.7c-.6 1.5-1.3 3-1.9 4.5-.6 1.5-1.2 3.1-1.9 4.9h7.5c-.7-1.8-1.3-3.4-1.9-4.9-.6-1.6-1.2-3.1-1.8-4.5zM630.4 433.9c-.3-.9-.6-1.7-.9-2.5-.3-.8-.6-1.6-.8-2.3H620c-.3.8-.6 1.5-.9 2.3-.3.8-.6 1.6-.9 2.5h-1.8c.7-1.8 1.3-3.6 1.9-5.1.6-1.6 1.2-3.1 1.8-4.5.6-1.4 1.1-2.8 1.7-4.1l1.8-3.9h1.5l1.8 3.9c.6 1.3 1.1 2.7 1.7 4.1s1.2 2.9 1.7 4.5c.6 1.6 1.2 3.3 1.9 5.1h-1.8zm-6.1-15.7c-.6 1.5-1.3 3-1.9 4.5-.6 1.5-1.2 3.1-1.9 4.9h7.5c-.7-1.8-1.3-3.4-1.9-4.9-.5-1.6-1.1-3.1-1.8-4.5zM639.1 432.7c1.4 0 2.4-.3 3.2-.8.8-.5 1.1-1.3 1.1-2.4 0-.6-.1-1.2-.4-1.6-.2-.4-.6-.8-1-1.1s-.9-.6-1.4-.8c-.5-.2-1.1-.4-1.7-.7-.7-.3-1.4-.6-2-.9-.6-.3-1.1-.6-1.5-1-.4-.4-.7-.8-.9-1.3-.2-.5-.3-1.1-.3-1.7 0-1.5.5-2.7 1.5-3.4s2.4-1.2 4.2-1.2c.5 0 .9 0 1.4.1s.9.2 1.3.3c.4.1.8.2 1.1.4.3.1.6.3.8.4l-.6 1.5c-.5-.3-1.1-.6-1.8-.8s-1.5-.3-2.3-.3c-.6 0-1.1.1-1.5.2-.5.1-.9.3-1.2.5s-.6.6-.8.9c-.2.4-.3.8-.3 1.4 0 .5.1 1 .3 1.4.2.4.5.7.9 1 .4.3.8.5 1.3.7.5.2 1 .5 1.6.7.7.3 1.4.6 2 .9.6.3 1.2.6 1.6 1 .5.4.8.9 1.1 1.4.3.6.4 1.2.4 2.1 0 1.6-.6 2.8-1.7 3.6s-2.6 1.2-4.5 1.2c-.7 0-1.3 0-1.9-.1s-1.1-.2-1.5-.3c-.4-.1-.8-.3-1.1-.4-.3-.1-.5-.3-.7-.4l.6-1.5c.2.1.4.2.7.4.3.1.6.3 1 .4.4.1.8.2 1.3.3.6-.1 1.1-.1 1.7-.1z"></path>
            </g>
          </svg>
        </a>
      </div>
      <a href="#navigation" class="p-navigation__toggle--open" title="menu">Menu</a>
      <a href="#navigation-closed" class="p-navigation__toggle--close" title="close menu">Close menu</a>
    </div>

    <nav class="p-navigation__nav" aria-label="Example main">
      <ul id="main-navigation" class="p-navigation__items u-clearfix">
        <li class="p-navigation__item"><a class="p-navigation__link" href="#install">Install</a></li>
        <li class="p-navigation__item"><a class="p-navigation__link" href="#how-it-works">How it works</a></li>
        <li class="p-navigation__item"><a class="p-navigation__link" href="#tour">Tour</a></li>
        <li class="p-navigation__item is-selected" aria-current="page"><a class="p-navigation__link" href="#docs">Docs</a></li>
        <li class="p-navigation__item"><a class="p-navigation__link" href="#tutorials">Tutorials</a></li>
        <li class="p-navigation__item"><a class="p-navigation__link" href="#discourse">Discourse</a></li>
      </ul>
    </nav>
  </div>
</header>

<section id="search-docs" class="p-strip--highlighted is-shallow">
  <div class="row">
    <form class="p-search-box u-no-margin--bottom">
      <input aria-label="search" type="search" class="p-search-box__input" name="q" placeholder="Search documentation" required="" autocomplete="on">
      <button type="reset" class="p-search-box__reset" name="close"><i class="p-icon--close">Close</i></button>
      <button type="submit" name="submitSearch" class="p-search-box__button"><i class="p-icon--search">Search</i></button>

    </form>
  </div>
</section>

<div class="p-strip is-shallow">
  <div class="row">
    <aside class="col-3">
      <nav class="p-side-navigation" id="drawer" aria-label="Example side">
        <button class="p-side-navigation__toggle js-drawer-toggle" aria-controls="drawer">
          Toggle side navigation
        </button>

        <div class="p-side-navigation__overlay js-drawer-toggle" aria-controls="drawer"></div>

        <div class="p-side-navigation__drawer">
          <div class="p-side-navigation__drawer-header">
            <button class="p-side-navigation__toggle--in-drawer js-drawer-toggle" aria-controls="drawer">
              Toggle side navigation
            </button>
          </div>

          <ul class="p-side-navigation__list">
            <li class="p-side-navigation__item--title">
              <a class="p-side-navigation__link">Machines</a>
            </li>
            <li class="p-side-navigation__item">
              <a class="p-side-navigation__link" href="#">Add machines</a>
            </li>
            <li class="p-side-navigation__item">
              <a class="p-side-navigation__link" href="#">Power management</a>
            </li>
            <li class="p-side-navigation__item">
              <a class="p-side-navigation__link" href="#">Commision machines</a>
            </li>
            <li class="p-side-navigation__item">
              <span class="p-side-navigation__text is-selected">Testing</span>
              <ul class="p-side-navigation__list">
                <li class="p-side-navigation__item">
                  <a class="p-side-navigation__link" href="#">Hardware testing</a>
                </li>
                <li class="p-side-navigation__item">
                  <a class="p-side-navigation__link" aria-current="page" href="#">Network testing</a>
                </li>
                <li class="p-side-navigation__item">
                  <a class="p-side-navigation__link" href="#">Commissioning and hardware testing scripts</a>
                </li>
              </ul>
            </li>
            <li class="p-side-navigation__item">
              <a class="p-side-navigation__link" href="#">Deploy machines</a>
            </li>
            <li class="p-side-navigation__item">
              <a class="p-side-navigation__link" href="#">Tags</a>
            </li>
          </ul>

          <ul class="p-side-navigation__list">
            <li class="p-side-navigation__item--title">
              <a class="p-side-navigation__link">Troubleshoot</a>
            </li>
            <li class="p-side-navigation__item">
              <a class="p-side-navigation__link" href="#">Getting help</a>
            </li>
            <li class="p-side-navigation__item">
              <a class="p-side-navigation__link" href="#">Non-snap MAAS installs</a>
            </li>
            <li class="p-side-navigation__item">
              <a class="p-side-navigation__link" href="#">MAAS 2.5 (and earlier) documentation</a>
            </li>
            <li class="p-side-navigation__item">
              <a href="#" class="p-side-navigation__link is-selected">Upgrading MAAS</a>
              <ul class="p-side-navigation__list">
                <li class="p-side-navigation__item">
                  <a class="p-side-navigation__link" href="#">Upgrade from 2.3 to 2.4</a>
                </li>
                <li class="p-side-navigation__item">
                  <a class="p-side-navigation__link" href="#">Upgrade from 1.9 to 2.x</a>
                </li>
              </ul>
            </li>
            <li class="p-side-navigation__item--title">
              <a class="p-side-navigation__link">Troubleshoot</a>
            </li>
            <li class="p-side-navigation__item">
              <a class="p-side-navigation__link" href="#">Getting help</a>
            </li>
            <li class="p-side-navigation__item">
              <a class="p-side-navigation__link" href="#">Non-snap MAAS installs</a>
            </li>
            <li class="p-side-navigation__item">
              <a class="p-side-navigation__link" href="#">MAAS 2.5 (and earlier) documentation</a>
            </li>
            <li class="p-side-navigation__item">
              <a href="#" class="p-side-navigation__link is-selected">Upgrading MAAS</a>
              <ul class="p-side-navigation__list">
                <li class="p-side-navigation__item">
                  <a class="p-side-navigation__link" href="#">Upgrade from 2.3 to 2.4</a>
                </li>
                <li class="p-side-navigation__item">
                  <a class="p-side-navigation__link" href="#">Upgrade from 1.9 to 2.x</a>
                </li>
              </ul>
            </li>
          </ul>

          <ul class="p-side-navigation__list">
            <li class="p-side-navigation__item--title">
              <a class="p-side-navigation__link">Troubleshoot</a>
            </li>
            <li class="p-side-navigation__item">
              <a class="p-side-navigation__link" href="#">Getting help</a>
            </li>
            <li class="p-side-navigation__item">
              <a class="p-side-navigation__link" href="#">Non-snap MAAS installs</a>
            </li>
            <li class="p-side-navigation__item">
              <a class="p-side-navigation__link" href="#">MAAS 2.5 (and earlier) documentation</a>
            </li>
            <li class="p-side-navigation__item">
              <a href="#" class="p-side-navigation__link is-selected">Upgrading MAAS</a>
              <ul class="p-side-navigation__list">
                <li class="p-side-navigation__item">
                  <a class="p-side-navigation__link" href="#">Upgrade from 2.3 to 2.4</a>
                </li>
                <li class="p-side-navigation__item">
                  <a class="p-side-navigation__link" href="#">Upgrade from 1.9 to 2.x</a>
                </li>
              </ul>
            </li>
            <li class="p-side-navigation__item--title">
              <a class="p-side-navigation__link">Troubleshoot</a>
            </li>
            <li class="p-side-navigation__item">
              <a class="p-side-navigation__link" href="#">Getting help</a>
            </li>
            <li class="p-side-navigation__item">
              <a class="p-side-navigation__link" href="#">Non-snap MAAS installs</a>
            </li>
            <li class="p-side-navigation__item">
              <a class="p-side-navigation__link" href="#">MAAS 2.5 (and earlier) documentation</a>
            </li>
            <li class="p-side-navigation__item">
              <a href="#" class="p-side-navigation__link is-selected">Upgrading MAAS</a>
              <ul class="p-side-navigation__list">
                <li class="p-side-navigation__item">
                  <a class="p-side-navigation__link" href="#">Upgrade from 2.3 to 2.4</a>
                </li>
                <li class="p-side-navigation__item">
                  <a class="p-side-navigation__link" href="#">Upgrade from 1.9 to 2.x</a>
                </li>
              </ul>
            </li>
          </ul>
        </div>
      </nav>
    </aside>

    <main class="col-9" id="main-content">
      <h1>MAAS Documentation</h1>

      <p>
        MAAS is <strong>Metal As A Service</strong>, a service that lets you treat physical servers like virtual machines – instances – in the cloud. No need to manage servers
        individually: MAAS turns your bare metal into an elastic, cloud-like resource.
      </p>
      <hr />
      <p>Quick questions you might have:</p>
      <ul>
        <li><a href="#docs/what-is-maas">What is MAAS – and what does it really do for me?</a></li>
        <li><a href="#docs/maas-example-config">Can you show me an example datacentre using MAAS?</a></li>
        <li><a href="#docs/what-is-maas#heading--how-maas-works">How does MAAS work, in detail?</a></li>
        <li><a href="#docs/concepts-and-terms">What concepts might I need to understand before starting?</a></li>
        <li><a href="#docs/explore-maas">Can I just install it and try it for myself?</a></li>
      </ul>

      <p>
        The minimum requirements for the machines that run MAAS vary widely depending on local implementation and usage. Below, you will find resource estimates based on MAAS
        components and operating system (Ubuntu Server). We consider both a test configuration (for proof of concept) and a production environment.
      </p>

      <hr />

      <h4>Quick questions you might have:</h4>

      <ul>
        <li><a href="#docs/maas-requirements#heading--test-environment">What are the requirements for a test environment?</a></li>
        <li><a href="#docs/maas-requirements#heading--production-environment">What are the requirements for a production environment?</a></li>
      </ul>

      <h2 id="heading--test-environment">Requirements for a test environment</h2>

      <p>
        Here is a proof of concept scenario, with all MAAS components installed on a single host. This scenario assumes <em>two</em> complete sets of images (latest two Ubuntu LTS
        releases) for a <em>single</em> architecture (amd64).
      </p>

      <div class="md-table">
        <table aria-label="MAAS table example">
          <thead>
            <tr>
              <th></th>
              <th>Memory (MB)</th>
              <th>CPU (GHz)</th>
              <th>Disk (GB)</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td><a href="#docs/concepts-and-terms#heading--controllers" rel="nofollow noopener">Region controller</a> (minus PostgreSQL)</td>
              <td>512</td>
              <td>0.5</td>
              <td>5</td>
            </tr>
            <tr>
              <td>PostgreSQL</td>
              <td>512</td>
              <td>0.5</td>
              <td>5</td>
            </tr>
            <tr>
              <td><a href="#docs/concepts-and-terms#heading--controllers" rel="nofollow noopener">Rack controller</a></td>
              <td>512</td>
              <td>0.5</td>
              <td>5</td>
            </tr>
            <tr>
              <td>Ubuntu Server (including logs)</td>
              <td>512</td>
              <td>0.5</td>
              <td>5</td>
            </tr>
          </tbody>
        </table>
      </div>
      <p>Therefore, the approximate requirements for this scenario are 2 GB memory, 2 GHz CPU, and 20 GB of disk space.</p>
      <h2 id="heading--production-environment">Requirements for a production environment</h2>
      <p>
        Here is a production scenario designed to handle a high number of sustained client connections. This scenario implements both high availability (region and rack) and load
        balancing (region).
      </p>
      <p>MAAS reserves extra space for images (database and rack controller), some images such as those for Microsoft Windows may require a lot more, so plan accordingly.</p>
      <p>Therefore, the approximate requirements for this scenario are:</p>
      <ul>
        <li>A region controller (including PostgreSQL) installed on one host, with 4.5 GB memory, 4.5 GHz CPU, and 45 GB of disk space.</li>
        <li>A duplicate region controller (including PostgreSQL) on a second host, also with 4.5 GB memory, 4.5 GHz CPU, and 45 GB of disk space.</li>
        <li>A rack controller installed on a third host, with 2.5 GB memory, 2.5 GHz CPU, and 40 GB of disk space.</li>
        <li>A duplicate rack controller on a fourth host, also with 2.5 GB memory, 2.5 GHz CPU, and 40 GB of disk space.</li>
      </ul>
      <div class="p-notification">
        <p class="p-notification__content">
          The tables above refer to MAAS infrastructure only. They do not cover the resources needed by subsequently-added nodes. Note that machines should have IPMI-based BMC
          controllers for power cycling, see [BMC power types][power-types].
        </p>
      </div>
      <p>Examples of factors that influence hardware specifications include:</p>
      <ul>
        <li>the number of connecting clients (client activity)</li>
        <li>how you decide to distribute services</li>
        <li>whether or not you use <a href="#docs/high-availability" rel="nofollow noopener">high availability</a></li>
        <li>whether or not you use <a href="#docs/high-availability#load-balancing-(optional)" rel="nofollow noopener">load balancing</a></li>
        <li>the number of images that you choose to store (disk space affecting PostgreSQL and the rack controller)</li>
      </ul>
      <p>Also not taken into account is a possible local image mirror, which would be a large consumer of disk space.</p>
      <p>
        One rack controller should only service 1000 machines or less, regardless of how you distribute them across subnets. There is no load balancing at the rack level, so you
        will need additional, independent rack controllers. Each controller must service its own subnet(s).
      </p>
    </main>
  </div>
</div>

<footer class="p-strip">
  <nav class="row" aria-label="Footer">
    <div class="has-cookie">
      <p>© 2020 Canonical Ltd. <a href="#">Ubuntu</a> and <a href="#">Canonical</a> are registered trademarks of Canonical Ltd.</p>
      <ul class="p-inline-list--middot">
        <li class="p-inline-list__item">
          <a href="#"><small>Legal information</small></a>
        </li>
        <li class="p-inline-list__item">
          <a href="#"><small>Report a bug on this site</small></a>
        </li>
      </ul>
      <span class="u-off-screen"><a href="#">Go to the top of the page</a></span>
    </div>
  </nav>
</footer>

<script>
  {% include "docs/examples/patterns/side-navigation/_example_script.js" %}
  {% include "docs/examples/patterns/side-navigation/_toggle_script.js" %}
</script>

{% endblock %}
